package controlador;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.TimerTask;

import Modelo.Asistente;
import Modelo.Programacion_extra;
import managed.MensajeGenericoBean;

public class HiloMensajeGenerico implements Runnable {

	private Programacion_extra mensajeGenerico;
	private ArrayList<Asistente> asistentes;
	
	
	public HiloMensajeGenerico(Programacion_extra mensajeGenerico,
			ArrayList<Asistente> asistentes) {
		super();
		this.mensajeGenerico = mensajeGenerico;
		this.asistentes = asistentes;
	}


	public Programacion_extra getMensajeGenerico() {
		return mensajeGenerico;
	}


	public HiloMensajeGenerico(Programacion_extra mensajeGenerico) {
		super();
		this.mensajeGenerico = mensajeGenerico;
	}


	public void setMensajeGenerico(Programacion_extra mensajeGenerico) {
		this.mensajeGenerico = mensajeGenerico;
	}
	String shortcode="2020";
	String pass="first";
	String server="http://192.168.101.4:8080/broker";

	public String enviarMensaje(String celular, String mensaje) {
		String result = "";

		try {
			// Construct data
			String data = URLEncoder.encode("shortcode", "UTF-8") + "="
					+ URLEncoder.encode(shortcode, "UTF-8");
			data += "&" + URLEncoder.encode("password", "UTF-8") + "="
					+ URLEncoder.encode(pass, "UTF-8");
			data += "&" + URLEncoder.encode("destinos", "UTF-8") + "="
					+ URLEncoder.encode(celular, "UTF-8");
			data += "&" + URLEncoder.encode("contenido", "UTF-8") + "="
					+ URLEncoder.encode(mensaje, "UTF-8");

			// Send data
			URL url = new URL(server + "/brokerSend");
			URLConnection conn = url.openConnection();
			conn.setDoOutput(true);
			OutputStreamWriter wr = new OutputStreamWriter(
					conn.getOutputStream());
			wr.write(data);
			wr.flush();

			// Get the response
			BufferedReader rd = new BufferedReader(new InputStreamReader(
					conn.getInputStream()));
			String line;
			while ((line = rd.readLine()) != null) {
				result = result + line + "\n";
			}
			wr.close();
			rd.close();
		} catch (Exception e) {
			result = "error";
		}

		return result;

	}
	public void run() {
	
	boolean seguir=true;
		
		while(seguir){
			
			Date fechaHoy= new Date();
			 
			
	
			
			int hora=fechaHoy.getHours();
			int min=fechaHoy.getMinutes();
			System.out.println(mensajeGenerico.getHora());
			int horaProg=Integer.parseInt( mensajeGenerico.getHora().split(":")[0]);
			int minProg=Integer.parseInt( mensajeGenerico.getHora().split(":")[1]);
			System.out.println("Hora actual "+hora+":"+min+" Hora Prog "+mensajeGenerico.getHora());
			System.out.println(asistentes.size());
			if(hora==horaProg && min==minProg || min>minProg){
				
	
			
			for(Asistente a: asistentes){
				enviarMensaje(a.getCelular(), a.getNombre()+", "+mensajeGenerico.getMensaje());
			System.out.println(a.getCelular()+a.getNombre());
			
			
			}
			seguir=false;
			try {
				this.finalize();
			} catch (Throwable e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			}
			
			try {
				Thread.sleep(30000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}

	}

}
